/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cellstore.cliente.gui.model;

import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author PPATOCHE
 */
public class Modelo {

    private List<Columna> listaColumnas;
    private DefaultTableModel defaultTableModel;
    private DefaultComboBoxModel defaultComboBoxModel;
    private int tipoSeleccion = javax.swing.ListSelectionModel.SINGLE_SELECTION;
    private Vector<String> nombreColumnas;

    public Modelo(List<Columna> lista) {
        this.listaColumnas = lista;
        procesar();
    }

    public Modelo(List<Columna> lista, int tipoSeleccion) {
        this.listaColumnas = lista;
        this.tipoSeleccion = tipoSeleccion;
        procesar();
    }

    private void procesar() {
        nombreColumnas = new Vector<String>();
        final ArrayList<Class> tipos = new ArrayList<Class>();
        final ArrayList<Boolean> editables = new ArrayList<Boolean>();

        for (Columna columna : listaColumnas) {
            nombreColumnas.add(columna.getEtiqueta());
            tipos.add(columna.getClase());
            editables.add(columna.isEditable());
        }
        defaultTableModel = new DefaultTableModel(nombreColumnas, nombreColumnas.size()) {

            @Override
            public Class getColumnClass(int columnIndex) {
                return tipos.get(columnIndex);
            }

            @Override
            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return editables.get(columnIndex);
            }
        };

        defaultComboBoxModel = new DefaultComboBoxModel(listaColumnas.toArray()) {
        };

    }

    public Vector<String> getNombreColumnas() {
        return nombreColumnas;
    }

    public DefaultComboBoxModel getDefaultComboBoxModel() {
        return defaultComboBoxModel;
    }

    public DefaultTableModel getDefaultTableModel() {
        return defaultTableModel;
    }

    public void dimensionarTabla(javax.swing.JTable tabla) {

        tabla.setSelectionMode(tipoSeleccion);

        for (int i = 0; i < listaColumnas.size(); i++) {
            if (listaColumnas.get(i).getTamanioMax() != null) {
                tabla.getColumnModel().getColumn(i).setMaxWidth(listaColumnas.get(i).getTamanioMax());
            }
            if (listaColumnas.get(i).getTamanioMin() != null) {
                tabla.getColumnModel().getColumn(i).setMinWidth(listaColumnas.get(i).getTamanioMin());
            }
            if (listaColumnas.get(i).getTamanio() != null) {
                tabla.getColumnModel().getColumn(i).setPreferredWidth(listaColumnas.get(i).getTamanio());
            }
        }
    }
}
